/**
 * Atividade.java
 * 
 * Projeto: SGA-LEDS
 * 
 * Rodrigo Soares Maia
 * IFES - Instituto Federal do Espírito Santo - Campus Serra
 */

package controleAtividades.cdp;

import controleInterno.cdp.Colaborador;
import controleInterno.cdp.Projeto;
import controleInterno.cdp.TipoAtividade;
import java.util.Calendar;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import org.eclipse.persistence.annotations.CascadeOnDelete;
import utilitario.utilitarioPersistencia.cdp.ObjetoPersistente;

@Entity
public class Atividade extends ObjetoPersistente
{
    private String descricao;
    private Calendar dataInicio;
    private Calendar dataFim;
    private Double progresso;
    private Double duracao;
    private TipoAtividade tipo;
    private StatusAtividade status;
    private NivelAtividade nivel;
    private Projeto projeto;
    private Colaborador responsavel;
    private Atividade atividadePai;

    public String getDescricao()
    {
        return descricao;
    }

    public void setDescricao(String descricao)
    {
        this.descricao = descricao;
    }

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    public Calendar getDataInicio()
    {
        return dataInicio;
    }

    public void setDataInicio(Calendar dataInicio)
    {
        this.dataInicio = dataInicio;
    }

    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    public Calendar getDataFim()
    {
        return dataFim;
    }

    public void setDataFim(Calendar dataFim)
    {
        this.dataFim = dataFim;
    }

    public Double getProgresso()
    {
        return progresso;
    }

    public void setProgresso(Double progresso)
    {
        this.progresso = progresso;
    }

    public Double getDuracao()
    {
        return duracao;
    }

    public void setDuracao(Double duracao)
    {
        this.duracao = duracao;
    }

    @ManyToOne(cascade = CascadeType.PERSIST)
    @JoinColumn(nullable = true)
    public TipoAtividade getTipo()
    {
        return tipo;
    }

    public void setTipo(TipoAtividade tipo)
    {
        this.tipo = tipo;
    }

    @Enumerated(EnumType.STRING)
    public StatusAtividade getStatus()
    {
        return status;
    }
    
    public void setStatus(StatusAtividade status)
    {
        this.status = status;
    }
    
    @Enumerated(EnumType.STRING)
    public NivelAtividade getNivel()
    {
        return nivel;
    }

    public void setNivel(NivelAtividade nivel)
    {
        this.nivel = nivel;
    }

    @ManyToOne(cascade = CascadeType.PERSIST)
    @JoinColumn(nullable = true)
    public Projeto getProjeto()
    {
        return projeto;
    }

    public void setProjeto(Projeto projeto)
    {
        this.projeto = projeto;
    }

    
    @ManyToOne(cascade = CascadeType.PERSIST)
    public Colaborador getResponsavel()
    {
        return responsavel;
    }

    public void setResponsavel(Colaborador responsavel)
    {
        this.responsavel = responsavel;
    }
    
    @ManyToOne(cascade=CascadeType.ALL) //TODO ver pq nao estah excluindo em cascata
    public Atividade getAtividadePai()
    {
        return atividadePai;
    }

    public void setAtividadePai(Atividade atividadePai)
    {
        this.atividadePai = atividadePai;
    }
    
    @Override
    public String toString()
    {
        return this.descricao;
    }
}
